/**
 * @author Extra
 * @description 演示js symbol类型
 * 
 * symbol主要用于模拟私有属性，使属性具有唯一的键。
 * 用 Symbol 表示对象内部状态，可以很好地隔离用户数据和程序状态。
 * 有了它，我们就不再需要某些命名约定了，比如内部属性用'$'开头。
 */
const sym: Symbol = Symbol('this is a symbol');
const sym2: Symbol = Symbol('this is a symbol');
console.log(sym == sym2);
console.log(typeof sym);
/**
 * 有一个全局的symbol注册中心，用Symbol.for()创建的symbol会添加到这个注册中心，并用它的 description作为索引键。
 * 也就是说，如果你用Symbol.for()创建带有相同 description的两个 symbol，它们就是相等的。
 */
let sym3: Symbol = Symbol.for('a');
let sym4: Symbol = Symbol.for('a');
console.log(sym3 == sym4);
